/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Soligee.controller.bo;


import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeBuscarImplements;
import Soligee.decorador.DecoradorNF;
import Soligee.model.vo.cadastros.ProdutoVO;
import Soligee.model.vo.lancamentos.ItensNFEntradaVO;
import Soligee.model.vo.lancamentos.ItensVendaVO;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 *
 * @author Administrador
 */
public class VendaBO {

    private double valorTotalVenda;
    private double valorTotalProdutos;


    // meotodo para calcular o total da venda
    public double calculaTotalProduto(List lista) {
        ItensVendaVO in;
        double total = 0;
        try{

        for (int i = 0; i < lista.size(); i++) {
            in = (ItensVendaVO) lista.get(i);
            total += in.getTotal();
        }


        }catch (ArrayIndexOutOfBoundsException ex){
                System.err.println("Erro:" + ex.getMessage());
        }
        return total;
    }

     //metodo necessario para montar os itens da tabela
    public List<DecoradorNF> montaItens(int chavePrimaria){
        List<DecoradorNF> listaDecoradora= new ArrayList();
        //facade para busca
        SessionFacadeBuscarImplements facadeBusca = new SessionFacadeBuscarImplements();
        //busca a lista de itens do pedido
        Iterator it = facadeBusca.buscaComItem(ItensVendaVO.class, "vendas").iterator();
        while(it.hasNext()){
            ItensVendaVO item = (ItensVendaVO)it.next();
            if(item.getChaveComposta().getVendas().getCodVenda() == chavePrimaria){
               ProdutoVO produto = (ProdutoVO)facadeBusca.buscaPorCodigo(ProdutoVO.class,"codProduto", item.getChaveComposta().getProduto().getCodProduto())
                        .iterator().next();
               DecoradorNF decorador = new DecoradorNF();
               decorador.setCodProduto(produto.getCodProduto());
               decorador.setDescricaoProduto(produto.getDescricao());
               decorador.setQuantidade(item.getQuantidade());
               decorador.setValorUnitario(item.getValorUnitario());
               decorador.setTotal();
               listaDecoradora.add(decorador);

            }//fim if
        }//fim while
        return listaDecoradora;
    }

     public List<ItensVendaVO> finalizaVenda(List<DecoradorNF> listaDecoradora){
        List<ItensVendaVO> listaItensVenda = new ArrayList();
        //le a lista de decoradores simplismente para coleta de valores
        Iterator it =  listaDecoradora.iterator();
        while (it.hasNext()) {
            //objeto decorador para manipulacao da lista
            DecoradorNF decoradorNF = (DecoradorNF) it.next();
            decoradorNF.getCodProduto();
            //cria um item para cade decorador de acordo com seus valores
            ItensVendaVO itemVenda = new ItensVendaVO(decoradorNF.getQuantidade(), decoradorNF.getValorUnitario(), decoradorNF.getTotal());
            listaItensVenda.add(itemVenda);
        }
        //calcula total dos produtos e seta no objeto criado anteriormente
        double total = calculaTotalProduto(listaItensVenda);
        this.setValorTotalProdutos(total);
        return listaItensVenda;
    }

    

      public double getValorTotalProdutos() {
        return valorTotalProdutos;
    }

    public void setValorTotalProdutos(double valorTotalProdutos) {
        this.valorTotalProdutos = valorTotalProdutos;
    }

    public double getValorTotalVenda() {
        return valorTotalVenda;
    }

    public void setValorTotalVenda(double valorTotalVenda) {
        this.valorTotalVenda = valorTotalVenda;
    }
}
